// 6. 具体访问者：纯文本导出器
using System.Text;

/// <summary>
/// 纯文本导出访问者类（访问者模式中的ConcreteVisitor）
/// 将文档元素导出为纯文本格式
/// </summary>
public class PlainTextExportVisitor : IDocumentVisitor
{
  /// <summary>
  /// 导出的纯文本输出内容
  /// </summary>
  public StringBuilder Output { get; } = new();

  /// <summary>
  /// 访问文本段落元素，直接输出文本内容
  /// </summary>
  /// <param name="text">文本段落对象</param>
  public void Visit(TextSegment text)
  {
    Output.AppendLine(text.Content);
  }

  /// <summary>
  /// 访问图片元素，以文本形式表示图片
  /// </summary>
  /// <param name="image">图片对象</param>
  public void Visit(ImageSegment image)
  {
    Output.AppendLine($"[Image: {image.Src}]");
  }
}